草庐IT

java - OnItemClickListener 消费 onClickListener 事件

全部标签

javascript - 如果手动切换翻转开关,如何仅触发事件

我创建了一个像这样的jQueryMobile翻转开关LionRose我听着这个翻转开关的变化$(document).on('change','#flip',function(e){console.log('changed');}但我不希望如果我将翻转开关的值更改为$('#flip').val('flower').flipswitch('refresh');如何通过直接与翻转开关交互或设置值并刷新翻转开关来检查翻转开关是否已更改?我在thisJSFiddle下创建了一个不良行为示例. 最佳答案 您需要使用.on()附加change事件

javascript - 为什么我不能使用 addEventListener 来停止上下文菜单事件?

我想禁止鼠标右键。但我发现如果我这样写:document.addEventListener('contextmenu',function(event){returnfalse;},false);它不会起作用,事件仍然会起作用。但是如果我这样写,document.oncontextmenu=function(){returnfalse;}鼠标右键不起作用。我想知道为什么我不能使用addEventListener来停止事件contextmenu。 最佳答案 如“PreventingtheBrowser'sDefaultAction”中所

javascript - JavaScript 事件监听器是否自动清理?

元素从DOM中移除后,其事件监听器是否会自动注销并清除其引用的资源(闭包)?如果是,如果某些非事件监听器代码持有对该元素的引用,答案会改变吗?我特别关心的是“伪导航”,其中unload事件被触发并且大部分文档被替换(当然许多替换元素也注册了事件监听器),但可能有在另一个整页加载发生之前的几个伪导航。所以我想知道是否有必要跟踪所有添加的事件监听器并在unload触发时手动删除它们以避免泄漏它们引用的任何资源。(注意:在我的例子中,“使用jQuery/[其他js库]来处理它”不是一个有效的解决方案。我感兴趣的是与IE8+和其他浏览器的相当新版本的兼容性。) 最佳

javascript - 避免多次添加事件

我正在使用addEvent("keydown",function(){});向元素动态添加事件。我的问题是有时这段代码会在同一个元素上运行两次或更多次。随着为该事件注册的函数运行几次,行为变得笨拙。有没有办法让我在一个元素上只运行一次上面的代码?也许检查之前是否已经添加了事件? 最佳答案 要么不要每次都使用一个新函数,要么使用一个类或其他东西来告诉你你已经添加了它。不是每次都使用新函数MooTools的addEvent是addEventListener/attachEvent的一个相当薄的包装器,它不会添加相同的函数两次。因此,如果

javascript - 通过使用不同的选择器选择一个元素来赋予一个元素多个事件处理程序

我有几个“事件”类,涵盖了我的一些svg元素。我正在为每个类分配一个用于mouseover和mouseout的事件处理程序,如果一个元素有多个类,我希望两个处理程序都触发。我该怎么做呢?似乎当我这样做的时候d3.selectAll(".a-class").on("mouseover",function(){//doA}).etc();d3.selectAll(".another-class").on("mouseover",function(){//doB}).etc();然后,当我将鼠标悬停在具有两个类的元素上时,只有B(第二个处理程序)触发,显然是因为它覆盖了第一个。有没有一种方法

javascript - 为什么 onload 事件在使用 window.open 打开的选项卡上不起作用?

我打开一个新的空白标签。现在我需要从这个选项卡在新选项卡中打开一个网站。我这样做如下。在它的控制台我写:varwild=window.open("https://css-tricks.com/","mywin",'');这很好用。现在我可以使用wild.document访问这个新窗口。现在我希望在加载dom后在该页面上执行一些代码。我将onload事件用作:functionfoo(){varmytext=wild.document.body.textContent;alert(mytext);}wild.addEventListener("load",foo);但不幸的是,警报并没有发

javascript - jquery 在执行之前的事件之前等待 for 循环完成

我有一个在点击事件时触发的函数。函数里面第一行是显示一个overlay,然后是一个for循环。我希望该函数首先显示叠加层,然后继续for循环。相反,只有在for循环完成后才会显示覆盖。这是jsFiddleLink$(document).on("click",function(){$("h1").text("Clicked");for(vari=0;i 最佳答案 View不会在同一个线程或同一个执行流程中更新。它将使用失效技术。这意味着View更新会推迟一段时间,这样我们就可以以最小的努力进行大量更新。javascript是单线程方式

javascript - 父目标子对象上的 addEventListener 事件

我正在做一个小应用程序只是为了学习ES6的东西,我发现addEventListener和父/子事件有问题。我有一个由几个div组成的菜单,这些div有一个图像(一个头像)和一些文本。每个div都有一个data-id属性来获取被点击的元素的id,我在每一行上放置了一个addEventListener:Loremipsum...和js:constrows=document.querySelectorAll('.row');rows.forEach(row=>row.addEventListener('click',selectRow));functionselectRow(e){varro

javascript - 为javascript插入的元素添加点击事件

如果我点击第一个“编辑”,我会得到一个console.log('clickhappend')但是如果我通过javascript添加其中一个框(点击“添加框”)然后从这个新框中编辑click不起作用。我知道这是因为javascript在元素不存在时运行,这就是为什么没有点击事件监听器的原因。我也知道使用jQuery我可以这样做:$('body').on('click','.edit',function(){//dowhatever};这样就可以了。但是我如何使用纯Javascript执行此操作?我找不到任何有用的资源。创建了一个我想工作的简单示例。解决这个问题的最佳方法是什么?所以问题是

JavaScript 事件循环 : Queue vs Message Queue vs Event Queue

阅读了大量的JavaScript事件循环教程,我看到了不同的术语来标识队列存储消息,当调用堆栈为空时,事件循环准备好获取消息:队列消息队列事件队列我找不到规范的术语来识别它。甚至MDN似乎也对theEventLooppage感到困惑因为它首先称它为队列,然后是消息队列,但在标签中我看到了事件队列。循环的这一部分是否在某处进行了详细定义,或者它只是一个没有“固定”名称的实现细节? 最佳答案 问得好,我也提倡使用正确的术语。队列、消息队列和事件队列指的是同一个构造(事件循环队列)。此构造具有在事件循环中触发的回调。有趣的是,有两个不同的